from PyQt5.QtCore import QObject, QRunnable, pyqtSignal, QThread


class Worker(QObject, QRunnable):
    finished = pyqtSignal()

    def __init__(self):
        super(Worker, self).__init__()
        # 初始化 Worker，设置需要的属性

    def run(self):
        # 执行任务
        print("Task is running in thread:", QThread.currentThread().objectName())
        # ... 执行任务的代码 ...

        # 任务完成后发出信号
        self.finished.emit()


# 在主函数中使用 Worker
def main():
    # 创建 QThread 对象
    app = QThread()

    # 创建 Worker 对象
    worker = Worker()

    # 将 Worker 的 run 方法连接到 QThread 的 started 信号
    app.started.connect(worker.run)

    # 将 Worker 的 finished 信号连接到 QThread 的 quit 槽
    worker.finished.connect(app.quit)

    # 将 Worker 移动到新线程
    worker.moveToThread(app)

    # 启动线程
    app.start()

    # 等待线程执行完成
    app.wait()


if __name__ == "__main__":
    main()
